Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
UserTracker
is created to periodically send updates to the active users sidebar.It keeps a convenient state, a map with the following structure:
active_users
keeps a map with the active users ids as keys and the user struct as valueuser_leaves
anduser_joins
keep the list of users who joined or left during the current interval, they are cleared every time an interval ends.UserTracker
receives updates sent fromLiveBeats.PresenceClient
every time that the callbackshandle_join
andhandle_leave
are called and updates its own state (active_users
,user_leaves
, anduser_joins
) with the users data.Every time the configured interval ends, it broadcast the users who joined or left during the interval to the
ProfileLive
andSettingsLive
liveviews.A hook called
active_users
is defined to receive the active user updates and update theactive_users
assign.The
active_users
assign is defined as atemporary_assign
and initializedon_mount
with theactive_users
saved in theUserTracker
state.The
remove-el
event is used to delete the users who left from the sidebar elements in both navigationsmobile-active-users
anddesktop-active-users